﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using Models.DTO;
using System.Net.Mail;
using System.Net;
namespace Models.DAO
{
    public class SendMailDAO
    {
        public string SendNewClaim(ClaimDTO cl, KhachHangDTO kh, string dv, string tengdv)
        {
            string body = "Thông tin vụ mới!";
            body+="<br/>1.  Reference: "+cl.TenClaim;
            body+="<br/>2.  Giám định viên thụ lý :"+tengdv;
            body+="<br/>3.  Đơn vị bảo hiểm: "+ dv;
            body+="<br/>4.	Người chỉ định: "+cl.NguoiPhuTrach;
            body+="<br/>5.	Người được bảo hiểm: "+kh.TenKhachHang;
            body+="<br/>6.	Địa chỉ: "+kh.DiaChi;
            body+="<br/>7.	Người liên hệ: "+kh.TenNguoiDaiDien;
            body+="<br/>8.	Email: "+kh.Email;
            body+="<br/>9.	Phone: "+ kh.DienThoai;
            body+="<br/>10.	Fax: "+ kh.Fax;
            body+="<br/>11.	Policy number: "+ cl.PolicyNo;
            body+="<br/>12.	Effective: "+ cl.Effective;
            body+="<br/>13.	Date of loss: "+ cl.Dol;
            body += "<br/>";
            body += "<br/>Thông tin sẽ được cập nhật sau khi Giám định viên đi công tác hiện trường hoặc thông tin được cung cấp từ nhà bảo hiểm!";
            string sto = "savvyadjus@gmail.com";
            return KiemTraMailChinh("New_Claim",sto, body, "Thông báo vụ mới "+cl.MaClaim);
            

        }
        public string CapNhatInfoBasic(ClaimDTO cl, KhachHangDTO kh)
        {
            string body = "Thông báo cập nhật ! ";
            body += "<br/>1.  Reference: " + cl.TenClaim;
            body += "<br/>2.	Policy number: " + cl.PolicyNo;
            body += "<br/>3.	Địa điểm tốn thất: " + cl.Premises;
            body += "<br/>4.	Người được bảo hiểm: " + kh.TenKhachHang;
            body += "<br/>5.	Địa chỉ: " + kh.DiaChi;
            body += "<br/>6.	Người liên hệ: " + kh.TenNguoiDaiDien;
            body += "<br/>7.	Email: " + kh.Email;
            body += "<br/>8.	Phone: " + kh.DienThoai;
            body += "<br/>9.	Fax: " + kh.Fax;           
            body += "<br/>10.	Effective: " + cl.Effective;
            body += "<br/>11.	Date of loss: " + cl.Dol;
            string sto = "savvyadjus@gmail.com";
            //string sto = "hoalyli@gmail.com";
            return KiemTraMailChinh(sto, body, "Thông báo vụ mới " + cl.MaClaim,"Claim_CoverInfor");
        }
        #region KiemTramailchinh
        public string KiemTraMailChinh(string sTo, string sBody, string subject, string namemail)
        {
            string to = sTo;
            //string from = "hoalyli@gmail.com";//mail của web
            string from = "savvyadjus@gmail.com";
            //string subject = "Thông báo từ web Savvy ";
            string body = sBody;
            string sFileName = string.Empty;
            string server = "smtp.gmail.com";
            string port = "587";//465 587
            string user = from;
            string pass = "AsZx0808";//pass của mail ở trên
            String[] addr = to.Split(',');
            System.Net.Mail.SmtpClient smtp = new SmtpClient();
            System.Net.Mail.MailMessage msg = new MailMessage();
            msg.IsBodyHtml = true;
            smtp.Port = Int32.Parse(port);
            smtp.EnableSsl = true;//chứng thực việc gửi mail
            //smtp.Host = "smtp.gmail.com";//Sử dụng SMTP của gmail 
            smtp.Host = server;
            smtp.Credentials = new NetworkCredential(user, pass);//user name , password cua mail gui
            string thongbao = "";
            try
            {
                if (from.Length > 0 && to.Length > 0 && subject.Length > 0 && body.Length >= 0)
                {
                    System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex(@"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*");//kiem tra tinh hop le cua mail
                    msg.From = new MailAddress(from, namemail, System.Text.Encoding.UTF8);
                    Byte i;
                    for (i = 0; i < addr.Length; i++)
                    {
                        bool result = regex.IsMatch(addr[i]);
                        if (result == false)
                        {
                            //lblError.Visible = true;
                            //lblError.Text = "Địa chỉ email nhận:" + sTo + " không hợp lệ.";
                            //Response.Write("<script> alert ('Mail Nhan" + sTo + "ko hop le!');</script>");
                            thongbao = "Error send mail or wrong mail!";
                        }
                        else
                        {
                            msg.To.Add(addr[i]);
                            msg.Subject = subject;
                            msg.Body = body;
                            msg.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
                            msg.ReplyTo = new MailAddress(addr[i]);
                            smtp.Send(msg);
                            //Response.Flush();
                            thongbao = "oke";
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                thongbao = ex.Message;
            }
            return thongbao;
        } 
        #endregion
        public string sendNoiDungClaim(string namemail,string tengdv, string text, string parthead, string mathamchieu)
        {
            string body = "<p>Thông báo cập nhật claim!<p>";
            body += "<br/> Vào lúc "+DateTime.Now+" Giám định viên "+ tengdv+" Cập nhật nội dung của phần "+parthead+";";
            body += "<br/> Nội dung như sau :";
            body += "<br/>";
            body += "<br/> "+text ;
            string sto = "sa.team@savvyadjusters.vn";
            //string sto = "huedinh@savvyadjusters.vn";
            string master = "savvyadjus@gmail.com";
            KiemTraMailChinh(master, body, "Thông báo cập nhật vụ " + mathamchieu,namemail);
            return KiemTraMailChinh(sto, body, "Thông báo cập nhật vụ " + mathamchieu, namemail);
        }
        public string ThongBaoClaimHandlingSummary(string namemail,string ten,string email, string noidung,string mathamchieu, string brief)
        {
            string body = "Bạn được "+ten+" nhắc đến trong cập nhật Claim handling summary của "+mathamchieu+" - "+ brief;
            body += "<br/>";
            body += "<br/> Nội dung như sau :";
            body += "<br/>";
            body += "<br/> " + noidung;
            body += "<br/>";
           
           //string sto = "savvyadjus@gmail.com";
            return KiemTraMailChinh(email, body, "Thông báo cập nhật Claim Handling Summary " + mathamchieu, namemail);
        }
        public string ThongBaoThaoLuan(string namemail,string ten, string email, string noidung, string mathamchieu, string brief)
        {
            string body = "Bạn được " + ten + " nhắc đến trong Thảo luận của vụ " + mathamchieu + " - " + brief;
            body += "<br/>";
            body += "<br/> Nội dung như sau :";
            body += "<br/>";
            body += "<br/> " + noidung;
            body += "<br/>";

            //string sto = "savvyadjus@gmail.com";
            return KiemTraMailChinh(email, body, "Thông báo cập nhật Claim Handling Summary " + mathamchieu, namemail);
        }
        public string ThongBaoMemos(string namemail,string ten, string email, string noidung, string brief)
        {
            string body = ten + " muốn bạn đọc memos: " + brief;
            body += "<br/>";
            body += "<br/> Nội dung như sau :";
            body += "<br/>";
            body += "<br/> " + noidung;
            body += "<br/>";

            //string sto = "savvyadjus@gmail.com";
            return KiemTraMailChinh(email, body, "Memos_" + brief, namemail);
        }
        
        public string ThongBaoTask(string namemail,string ten, string email, string noidung, string brief, string deadline)
        {
            string body = "Dear Partner,";
            body += "<br/>";
            body += "<br/>";
            body += "<br/>";
            body += ten + " Muốn bạn hỗ trợ vụ: " + brief;
            body += "<br/>";
            body += "<br/> Cụ thể như sau :";
            body += "<br/>";
            body += "<br/> " +"***" +noidung+"***";
            body += "<br/>";
            body += "<br/> Hạn hoàn thành vào: " + deadline;
            body += "<br/>";
            body += "<br/> Nêu không thể thực hiện hoặc hoàn thành kịp Deadline, bạn vui lòng liên hệ sớm " + ten+" để được hổ trợ kịp thời";
            body += "<br/>";
            body += "<br/>";
            body += "<br/> Cheers, ";

            //string sto = "savvyadjus@gmail.com";
            return KiemTraMailChinh(email, body, "Task to do " + brief, namemail);
        }

        public string BoTask(string namemail, string ten, string email, string brief, string noidung)
        {
            string body = "Dear Partner,";
            body += "<br/>";
            body += "<br/>";
            body += "<br/>";
            body += ten + " need another LA to support case: " + brief+" - "+noidung+", so you don't need interest more, Thanks!";
            body += "<br/>";
            body += "<br/>";
            body += "<br/> Cheers, ";

            //string sto = "savvyadjus@gmail.com";
            return KiemTraMailChinh(email, body, "Task to do " + brief, namemail);
        }

        public string CapNhatTask(string namemail, string ten, string email, string brief, string noidung, DateTime deadline)
        {
            string body = "Dear Partner,";
            body += "<br/>";
            body += "<br/>";
            body += "<br/>";
            body += ten + " đã cập nhật lại task đã giao cho bạn: " + brief + " với nội dung: " + noidung + " với hạn hoàn thành vào ngày : "+ deadline.ToShortDateString();
            body += "<br/>";
            body += "<br/>";
            body += "<br/> Cheers, ";

            //string sto = "savvyadjus@gmail.com";
            return KiemTraMailChinh(email, body, "Task to do " + brief, namemail);
        }
        public string khoiPhucMatKhau(string namemail,string email, string link)
        {
            string body = "Bạn vừa yêu cầu khôi phục lại mật khẩu!";
            body += "<br/> Vui lòng theo đường link bên dưới và cập nhật lại mật khẩu mới.";
            body += "<br/>" + link;
            string sto = email;
            return KiemTraMailChinh(sto, body, "Thay đổi mật khẩu", namemail);
        }

        public void QuickSendMail(string namemail,string tomail, string body, string title)
        {
            
            SmtpClient smtpClient = new SmtpClient(namemail, 25);

            smtpClient.Credentials = new System.Net.NetworkCredential("savvyadjus@gmail.com", "AsZx0808");
            smtpClient.UseDefaultCredentials = true;
            smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
            smtpClient.EnableSsl = true;
            //MailMessage mail = new MailMessage();

            MailMessage mail = new MailMessage("savvyadjus@gmail.com", tomail, title, body);
            SmtpClient SMTPServer = new SmtpClient("127.0.0.1");
            try
            {
                SMTPServer.Send(mail);
                mail.From = new MailAddress("savvyadjus@gmail.com", namemail);
                mail.To.Add(new MailAddress("savvyadjus@gmail.com"));
                mail.To.Add(new MailAddress(tomail));
                //mail.CC.Add(new MailAddress("sonpham@savvyadjusters.vn"));
                smtpClient.Send(mail);
            }
            catch (Exception ex)
            {
                
            }
        }
        void Checkbeforesendmail(string SendTo, string body, string tieude, string mailcc)
        {
            SmtpClient client = new SmtpClient("smtp.gmail.com", 587);

            client.EnableSsl = true;

            MailAddress from = new MailAddress("savvyadjus@gmail.com", "Task-to-do");

            MailAddress to = new MailAddress(SendTo, "LA");

            MailMessage message = new MailMessage(from, to);

            message.Body = body;

            message.Subject = tieude;
            message.CC.Add(mailcc);
            NetworkCredential myCreds = new NetworkCredential("savvyadjus@gmail.com", "AsZx0808", "");

            client.Credentials = myCreds;
            message.IsBodyHtml = true;
            try
            {

                client.Send(message);

            }
            catch (Exception ex)
            {

                //txtResult.Text += "Exception is:" + ex.ToString();

            }
        }
        public string Send_Email(String SendFrom, string SendTo, string Subject, string Body, string cc)
        {
            try
            {

                System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex(@"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*");
                bool result = regex.IsMatch(SendTo);
                if (result == false)
                {
                    return "Địa chỉ email không hợp lệ.";
                }
                else
                {
                    Checkbeforesendmail(SendTo, Body, Subject, cc);
                    //System.Net.Mail.SmtpClient smtp = new SmtpClient(); 
                    //System.Net.Mail.MailMessage msg = new MailMessage(SendFrom,SendTo,Subject,Body); 
                    //msg.IsBodyHtml = true; 
                    //smtp.Host = "smtp.gmail.com";//Sử dụng SMTP của gmail 
                    //smtp.Send(msg); 
                    return "Email đã được gửi đến: " + SendTo + ".";
                }
            }
            catch
            {
                return "";
            }
        }  
    }
}